<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>DAP_Transfer</title>
<title>CMSIS-DAP: DAP_Transfer</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 46px;">
  <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">CMSIS-DAP
   &#160;<span id="projectnumber">Version 2.0.0</span>
   </div>
   <div id="projectbrief">Interface Firmware for CoreSight Debug Access Port</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
    <ul class="tablist">
      <script type="text/javascript">
		<!--
		writeComponentTabs.call(this);
		//-->
      </script>
	  </ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
      <li><a href="modules.html"><span>Reference</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__DAP__Transfer.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">DAP_Transfer<div class="ingroups"><a class="el" href="group__DAP__transfer__gr.html">Transfer Commands</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Read/write single and multiple registers.  
<a href="#details">More...</a></p>
<p>Read/write single and multiple registers. </p>
<p>The <b>DAP_Transfer Command</b> reads or writes data to CoreSight registers. Each CoreSight register is accessed with a single 32-bit read or write. The CoreSight registers are addressed with DPBANKSEL/APBANKSEL and address lines A2, A3 (A0 = 0 and A1 = 0). This command executes several read/write operations on the selected DP/AP registers. The Transfer Data in the Response are in the order of the Transfer Request in the Command but might be shorter in case of communication failures. The data transfer is aborted on a communication error:</p>
<ul>
<li>Protocol Error</li>
<li>Target FAULT response</li>
<li>Target WAIT responses exceed configured value</li>
<li>Value Mismatch (Read Register with Value Match)</li>
</ul>
<p><b>DAP_Transfer Command:</b> </p>
<div class="fragment"><div class="line">| BYTE | BYTE *****| BYTE **********| BYTE *************| WORD *********|</div>
<div class="line">&gt; 0x05 | DAP Index | Transfer Count | Transfer Request  | Transfer Data |</div>
<div class="line">|******|***********|****************|+++++++++++++++++++++++++++++++++++|</div>
</div><!-- fragment --><ul>
<li><b>DAP Index</b>: Zero based device index of the selected JTAG device. For SWD mode the value is ignored.</li>
<li><b>Transfer Count</b>: Number of transfers: 1 .. 255. For each transfer a Transfer Request BYTE is sent. Depending on the request an additional Transfer Data WORD is sent.</li>
<li><b>Transfer Request</b>: Contains information about requested access from host debugger.<ul>
<li>Bit 0: APnDP: 0 = Debug Port (DP), 1 = Access Port (AP).</li>
<li>Bit 1: RnW: 0 = Write Register, 1 = Read Register.</li>
<li>Bit 2: A2 Register Address bit 2.</li>
<li>Bit 3: A3 Register Address bit 3.</li>
<li>Bit 4: Value Match (only valid for Read Register): 0 = Normal Read Register, 1 = Read Register with Value Match.</li>
<li>Bit 5: Match Mask (only valid for Write Register): 0 = Normal Write Register, 1 = Write Match Mask (instead of Register).</li>
<li>Bit 7: TD_TimeStamp request: 0 = No time stamp, 1 = Include time stamp value from Test Domain Timer before every Transfer Data word (restrictions see note).</li>
</ul>
</li>
<li><b>Transfer Data</b>: register value or match value<ul>
<li>for Write Register transfer request: the register value for the CoreSight register.</li>
<li>for Match Mask transfer request: the match mask for the CoreSight register.</li>
<li>for Value Match transfer request: the match value of the CoreSight register.</li>
<li>no data is sent for other operations.</li>
</ul>
</li>
</ul>
<dl class="section note"><dt>Note</dt><dd><b>Transfer Request</b> - Bit 7 (Time Stamp) cannot be combined with Bit 4 (Value Match) or Bit 5 (Match Mask).</dd></dl>
<p><b>DAP_Transfer Response:</b> </p>
<div class="fragment"><div class="line">| BYTE | BYTE **********| BYTE *************| WORD ********| WORD *********|</div>
<div class="line">&lt; 0x05 | Transfer Count | Transfer Response | TD_TimeStamp | Transfer Data |</div>
<div class="line">|******|****************|*******************|<span class="comment">//////////////|+++++++++++++++|</span></div>
</div><!-- fragment --><ul>
<li><b>Transfer Count</b>: Number of transfers: 1 .. 255 that are executed.</li>
<li><b>Transfer Response</b>: Contains information about last response from target Device.<ul>
<li>Bit 2..0: ACK (Acknowledge) value:<ul>
<li>1 = OK (for SWD protocol), OK or FAULT (for JTAG protocol),</li>
<li>2 = WAIT</li>
<li>4 = FAULT</li>
<li>7 = NO_ACK (no response from target)</li>
</ul>
</li>
<li>Bit 3: 1 = Protocol Error (SWD)</li>
<li>Bit 4: 1 = Value Mismatch (Read Register with Value Match)</li>
</ul>
</li>
<li><b>TD_TimeStamp</b>: current Test Domain Timer value is added before each Transfer Data word when Transfer Request - bit 7: TD_TimeStamp request is set.</li>
<li><b>Transfer Data</b>: register value or match value in the order of the <b>Transfer Request</b>.<ul>
<li>for Read Register transfer request: the register value of the CoreSight register.</li>
<li>no data is sent for other operations. </li>
</ul>
</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Wed Jul 10 2019 15:20:28 for CMSIS-DAP Version 2.0.0 by Arm Ltd. All rights reserved.
	<!--
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 
	-->
	</li>
  </ul>
</div>
</body>
</html>
